package Lagou.PriorityQueue03;

public class T0301 {
    /**
     例 1：最小的 k 个数
     【题目】给定一个数组 a[]，返回这个数组中最小的 k 个数。

     输入：A = [3,2,1], k = 2
     输出：[2, 1]
     * */
    private int[] a = null;
    private int n = 0;

    private int size() {
        return n;
    }

    public int[] getLeastNumbers(int[] arr, int k) {
        if (k <= 0 || arr == null || arr.length == 0) {
            return new int[0];
        }
        //初始化堆
        a = new int[k + 1];
        n = 0;
        Heap hp = new Heap();
        for (int x : arr) {
            //首次将元素压人堆中，
            hp.push(x);
        }
        if (size() > k) {
            hp.pop();
        }
        //返回最小的k个数
        int[] ans = new int[k];
        int i = 0;
        while (size() > 0) {
            ans[i++] = hp.pop();
        }
        return ans;
    }
}
